<div id="maincontent">

<h1>ECMAScript break 和 continue 语句</h1>

<div id="tpn">

</div>


<div>
<p><strong>break 和 continue 语句对循环中的代码执行提供了更严格的控制。</strong></p>
</div>


<div>
<h2>break 和 continue 语句的不同之处</h2>

<p>break 语句可以立即退出循环，阻止再次反复执行任何代码。</p>

<p>而 continue 语句只是退出当前循环，根据控制表达式还允许继续进行下一次循环。</p>

<p>例如：</p>

<pre>
var iNum = 0;

for (var i=1; i&lt;10; i++) {
  if (i % 5 == 0) {
    <code>break;</code>
  }
  iNum++;
}
alert(iNum);	<span>//输出 &quot;4&quot;</span>
</pre>

<p>在以上代码中，for 循环从 1 到 10 迭代变量 i。在循环主体中，if 语句将（使用取模运算符）检查 i 的值是否能被 5 整除。如果能被 5 整除，将执行 break 语句。alert 显示 &quot;4&quot;，即退出循环前执行循环的次数。</p>

<p>如果用 continue 语句代替这个例子中的 break 语句，结果将不同：</p>

<pre>
var iNum = 0;

for (var i=1; i&lt;10; i++) {
  if (i % 5 == 0) {
    <code>continue;</code>
  }
  iNum++;
}
alert(iNum);	<span>//输出 &quot;8&quot;</span>
</pre>

<p>这里，alert 将显示 &quot;8&quot;，即执行循环的次数。可能执行的循环总数为 9，不过当 i 的值为 5 时，将执行 continue 语句，会使循环跳过表达式 iNum++，返回循环开头。</p>
</div>


<div>
<h2>与有标签的语句一起使用</h2>

<p>break 语句和 continue 语句都可以与有标签的语句联合使用，返回代码中的特定位置。</p>

<p>通常，当循环内部还有循环时，会这样做，例如：</p>

<pre>
var iNum = 0;

outermost:
for (var i=0; i&lt;10; i++) {
  for (var j=0; j&lt;10; j++) {
    if (i == 5 &amp;&amp; j == 5) {
    <code>break outermost;</code>
  }
  iNum++;
  }
}

alert(iNum);	<span>//输出 &quot;55&quot;</span>
</pre>

<p>在上面的例子中，标签 outermost 表示的是第一个 for 语句。正常情况下，每个 for 语句执行 10 次代码块，这意味着 iNum++ 正常情况下将被执行 100 次，在执行完成时，iNum 应该等于 100。这里的 break 语句有一个参数，即停止循环后要跳转到的语句的标签。这样 break 语句不止能跳出内部 for 语句（即使用变量 j 的语句），还能跳出外部 for 语句（即使用变量 i 的语句）。因此，iNum 最后的值是 55，因为当 i 和 j 的值都等于 5 时，循环将终止。</p>

<p>可以以相同的方式使用 continue 语句：</p>

<pre>
var iNum = 0;

outermost:
for (var i=0; i&lt;10; i++) {
  for (var j=0; j&lt;10; j++) {
    if (i == 5 &amp;&amp; j == 5) {
    <code>continue outermost;</code>
  }
  iNum++;
  }
}

alert(iNum);	<span>//输出 &quot;95&quot;</span>
</pre>

<p>在上例中，continue 语句会迫使循环继续，不止是内部循环，外部循环也如此。当 j 等于 5 时出现这种情况，意味着内部循环将减少 5 次迭代，致使 iNum 的值为 95。</p>

<p class="tip"><span>提示：</span>可以看出，与  break 和 continue 联合使用的有标签语句非常强大，不过过度使用它们会给调试代码带来麻烦。要确保使用的标签具有说明性，同时不要嵌套太多层循环。</p>

<p class="tip"><span>提示：</span>想了解什么是有标签语句，请阅读 <a href="/js/pro_js_statements_labeled.asp" title="ECMAScript 标签语句">ECMAScript 标签语句</a> 这一节。</p>
</div>


<div id="bpn">

</div>




</div>
